SQL UNION 연산자

IT 위키

SQL의 UNION 연산자는 두 개 이상의 SELECT 문 결과를 결합하여 하나의 결과 집합으로 반환할 때 사용된다. 이때 각 SELECT 문은 같은 수의 컬럼을 반환해야 하며, 각 컬럼의 데이터 타입이 호환되어야 한다.

1 기본 문법[편집 | 원본 편집]

SELECT 컬럼1, 컬럼2, ...
FROM 테이블1
[WHERE 조건]
UNION
SELECT 컬럼1, 컬럼2, ...
FROM 테이블2
[WHERE 조건];
  • 기본적으로 중복된 행은 제거됨 (집합 연산)
  • 중복 포함을 허용하려면 UNION 대신 UNION ALL 사용

2 UNION vs UNION ALL[편집 | 원본 편집]

  • UNION
    • 중복된 행을 제거하여 결과 반환
    • 내부적으로 정렬 및 비교 연산이 수행되어 성능에 영향
  • UNION ALL
    • 모든 결과 행을 포함 (중복 허용)
    • 성능이 더 우수하고 빠름

3 예시 테이블[편집 | 원본 편집]

customers_2023:

id name
1 Alice
2 Bob

customers_2024:

id name
2 Bob
3 Carol

4 예제 1: UNION 사용 (중복 제거)[편집 | 원본 편집]

SELECT name FROM customers_2023
UNION
SELECT name FROM customers_2024;

→ 결과:

name
Alice
Bob
Carol

5 예제 2: UNION ALL 사용 (중복 허용)[편집 | 원본 편집]

SELECT name FROM customers_2023
UNION ALL
SELECT name FROM customers_2024;

→ 결과:

name
Alice
Bob
Bob
Carol

6 주의 사항[편집 | 원본 편집]

  • SELECT 문의 컬럼 수가 동일해야 하며, 데이터 타입이 호환되어야 함
  • 컬럼 이름은 첫 번째 SELECT 문을 기준으로 정해짐
  • ORDER BY는 전체 결과에 대해 마지막 SELECT 뒤에만 사용 가능

7 예제 3: ORDER BY 사용[편집 | 원본 편집]

SELECT name FROM customers_2023
UNION
SELECT name FROM customers_2024
ORDER BY name;

8 같이 보기[편집 | 원본 편집]

9 참고 문헌[편집 | 원본 편집]

  • Melton, J., & Simon, A. R. (2002). SQL: 1999 – Understanding Relational Language Components. Morgan Kaufmann.
  • MySQL Reference Manual
  • PostgreSQL Documentation
  • Oracle SQL Language Reference